#pragma once

#if !defined(CUBLAS_API_H_)
#define CUBLAS_API_H_
#endif /* !defined(CUBLAS_API_H_) */

#define ENABLE_CUDA_TO_MACA_ADAPTOR

#include "bridge/runtime/cuda_to_maca_mcr_adaptor.h"
#include "bridge/runtime/cuda_runtime_wrapper.h"
#include "common/__clang_maca_common_define.h"
#include "mcblas/mcblas.h"

#define CUBLAS_VER_MAJOR MCBLAS_VER_MAJOR
#define CUBLAS_VER_MINOR MCBLAS_VER_MINOR
#define CUBLAS_VER_PATCH MCBLAS_VER_PATCH
#define CUBLAS_VER_BUILD MCBLAS_VER_BUILD
#define CUBLAS_VERSION MCBLAS_VERSION
#define CUBLAS_STATUS_SUCCESS MCBLAS_STATUS_SUCCESS
#define CUBLAS_STATUS_NOT_INITIALIZED MCBLAS_STATUS_NOT_INITIALIZED
#define CUBLAS_STATUS_ALLOC_FAILED MCBLAS_STATUS_ALLOC_FAILED
#define CUBLAS_STATUS_INVALID_VALUE MCBLAS_STATUS_INVALID_VALUE
#define CUBLAS_STATUS_ARCH_MISMATCH MCBLAS_STATUS_ARCH_MISMATCH
#define CUBLAS_STATUS_MAPPING_ERROR MCBLAS_STATUS_MAPPING_ERROR
#define CUBLAS_STATUS_EXECUTION_FAILED MCBLAS_STATUS_EXECUTION_FAILED
#define CUBLAS_STATUS_INTERNAL_ERROR MCBLAS_STATUS_INTERNAL_ERROR
#define CUBLAS_STATUS_NOT_SUPPORTED MCBLAS_STATUS_NOT_SUPPORTED
#define CUBLAS_STATUS_LICENSE_ERROR MCBLAS_STATUS_LICENSE_ERROR
#define CUBLAS_FILL_MODE_LOWER MCBLAS_FILL_MODE_LOWER
#define CUBLAS_FILL_MODE_UPPER MCBLAS_FILL_MODE_UPPER
#define CUBLAS_FILL_MODE_FULL MCBLAS_FILL_MODE_FULL
#define CUBLAS_DIAG_NON_UNIT MCBLAS_DIAG_NON_UNIT
#define CUBLAS_DIAG_UNIT MCBLAS_DIAG_UNIT
#define CUBLAS_SIDE_LEFT MCBLAS_SIDE_LEFT
#define CUBLAS_SIDE_RIGHT MCBLAS_SIDE_RIGHT
#define CUBLAS_OP_N MCBLAS_OP_N
#define CUBLAS_OP_T MCBLAS_OP_T
#define CUBLAS_OP_C MCBLAS_OP_C
#define CUBLAS_OP_HERMITAN MCBLAS_OP_HERMITAN
#define CUBLAS_OP_CONJG MCBLAS_OP_CONJG
#define CUBLAS_POINTER_MODE_HOST MCBLAS_POINTER_MODE_HOST
#define CUBLAS_POINTER_MODE_DEVICE MCBLAS_POINTER_MODE_DEVICE
#define CUBLAS_ATOMICS_NOT_ALLOWED MCBLAS_ATOMICS_NOT_ALLOWED
#define CUBLAS_ATOMICS_ALLOWED MCBLAS_ATOMICS_ALLOWED
#define CUBLAS_GEMM_DFALT MCBLAS_GEMM_DFALT
#define CUBLAS_GEMM_DEFAULT MCBLAS_GEMM_DEFAULT
#define CUBLAS_GEMM_ALGO0 MCBLAS_GEMM_ALGO0
#define CUBLAS_GEMM_ALGO1 MCBLAS_GEMM_ALGO1
#define CUBLAS_GEMM_ALGO2 MCBLAS_GEMM_ALGO2
#define CUBLAS_GEMM_ALGO3 MCBLAS_GEMM_ALGO3
#define CUBLAS_GEMM_ALGO4 MCBLAS_GEMM_ALGO4
#define CUBLAS_GEMM_ALGO5 MCBLAS_GEMM_ALGO5
#define CUBLAS_GEMM_ALGO6 MCBLAS_GEMM_ALGO6
#define CUBLAS_GEMM_ALGO7 MCBLAS_GEMM_ALGO7
#define CUBLAS_GEMM_ALGO8 MCBLAS_GEMM_ALGO8
#define CUBLAS_GEMM_ALGO9 MCBLAS_GEMM_ALGO9
#define CUBLAS_GEMM_ALGO10 MCBLAS_GEMM_ALGO10
#define CUBLAS_GEMM_ALGO11 MCBLAS_GEMM_ALGO11
#define CUBLAS_GEMM_ALGO12 MCBLAS_GEMM_ALGO12
#define CUBLAS_GEMM_ALGO13 MCBLAS_GEMM_ALGO13
#define CUBLAS_GEMM_ALGO14 MCBLAS_GEMM_ALGO14
#define CUBLAS_GEMM_ALGO15 MCBLAS_GEMM_ALGO15
#define CUBLAS_GEMM_ALGO16 MCBLAS_GEMM_ALGO16
#define CUBLAS_GEMM_ALGO17 MCBLAS_GEMM_ALGO17
#define CUBLAS_GEMM_ALGO18 MCBLAS_GEMM_ALGO18
#define CUBLAS_GEMM_ALGO19 MCBLAS_GEMM_ALGO19
#define CUBLAS_GEMM_ALGO20 MCBLAS_GEMM_ALGO20
#define CUBLAS_GEMM_ALGO21 MCBLAS_GEMM_ALGO21
#define CUBLAS_GEMM_ALGO22 MCBLAS_GEMM_ALGO22
#define CUBLAS_GEMM_ALGO23 MCBLAS_GEMM_ALGO23
#define CUBLAS_GEMM_DEFAULT_TENSOR_OP MCBLAS_GEMM_DEFAULT_TENSOR_OP
#define CUBLAS_GEMM_DFALT_TENSOR_OP MCBLAS_GEMM_DFALT_TENSOR_OP
#define CUBLAS_GEMM_ALGO0_TENSOR_OP MCBLAS_GEMM_ALGO0_TENSOR_OP
#define CUBLAS_GEMM_ALGO1_TENSOR_OP MCBLAS_GEMM_ALGO1_TENSOR_OP
#define CUBLAS_GEMM_ALGO2_TENSOR_OP MCBLAS_GEMM_ALGO2_TENSOR_OP
#define CUBLAS_GEMM_ALGO3_TENSOR_OP MCBLAS_GEMM_ALGO3_TENSOR_OP
#define CUBLAS_GEMM_ALGO4_TENSOR_OP MCBLAS_GEMM_ALGO4_TENSOR_OP
#define CUBLAS_GEMM_ALGO5_TENSOR_OP MCBLAS_GEMM_ALGO5_TENSOR_OP
#define CUBLAS_GEMM_ALGO6_TENSOR_OP MCBLAS_GEMM_ALGO6_TENSOR_OP
#define CUBLAS_GEMM_ALGO7_TENSOR_OP MCBLAS_GEMM_ALGO7_TENSOR_OP
#define CUBLAS_GEMM_ALGO8_TENSOR_OP MCBLAS_GEMM_ALGO8_TENSOR_OP
#define CUBLAS_GEMM_ALGO9_TENSOR_OP MCBLAS_GEMM_ALGO9_TENSOR_OP
#define CUBLAS_GEMM_ALGO10_TENSOR_OP MCBLAS_GEMM_ALGO10_TENSOR_OP
#define CUBLAS_GEMM_ALGO11_TENSOR_OP MCBLAS_GEMM_ALGO11_TENSOR_OP
#define CUBLAS_GEMM_ALGO12_TENSOR_OP MCBLAS_GEMM_ALGO12_TENSOR_OP
#define CUBLAS_GEMM_ALGO13_TENSOR_OP MCBLAS_GEMM_ALGO13_TENSOR_OP
#define CUBLAS_GEMM_ALGO14_TENSOR_OP MCBLAS_GEMM_ALGO14_TENSOR_OP
#define CUBLAS_GEMM_ALGO15_TENSOR_OP MCBLAS_GEMM_ALGO15_TENSOR_OP
#define CUBLAS_DEFAULT_MATH MCBLAS_DEFAULT_MATH
#define CUBLAS_TENSOR_OP_MATH MCBLAS_TENSOR_OP_MATH
#define CUBLAS_PEDANTIC_MATH MCBLAS_PEDANTIC_MATH
#define CUBLAS_TF32_TENSOR_OP_MATH MCBLAS_TF32_TENSOR_OP_MATH
#define CUBLAS_MATH_DISALLOW_REDUCED_PRECISION_REDUCTION \
    MCBLAS_MATH_DISALLOW_REDUCED_PRECISION_REDUCTION
#define CUBLAS_COMPUTE_16F MCBLAS_COMPUTE_16F
#define CUBLAS_COMPUTE_16F_PEDANTIC MCBLAS_COMPUTE_16F_PEDANTIC
#define CUBLAS_COMPUTE_32F MCBLAS_COMPUTE_32F
#define CUBLAS_COMPUTE_32F_PEDANTIC MCBLAS_COMPUTE_32F_PEDANTIC
#define CUBLAS_COMPUTE_32F_FAST_16F MCBLAS_COMPUTE_32F_FAST_16F
#define CUBLAS_COMPUTE_32F_FAST_16BF MCBLAS_COMPUTE_32F_FAST_16BF
#define CUBLAS_COMPUTE_32F_FAST_TF32 MCBLAS_COMPUTE_32F_FAST_TF32
#define CUBLAS_COMPUTE_64F MCBLAS_COMPUTE_64F
#define CUBLAS_COMPUTE_64F_PEDANTIC MCBLAS_COMPUTE_64F_PEDANTIC
#define CUBLAS_COMPUTE_32I MCBLAS_COMPUTE_32I
#define CUBLAS_COMPUTE_32I_PEDANTIC MCBLAS_COMPUTE_32I_PEDANTIC

// class redefine
#define cublasStatus_t mcblasStatus_t
#define cublasFillMode_t mcblasFillMode_t
#define cublasDiagType_t mcblasDiagType_t
#define cublasSideMode_t mcblasSideMode_t
#define cublasOperation_t mcblasOperation_t
#define cublasPointerMode_t mcblasPointerMode_t
#define cublasAtomicsMode_t mcblasAtomicsMode_t
#define cublasGemmAlgo_t mcblasGemmAlgo_t
#define cublasMath_t mcblasMath_t
#define cublasComputeType_t mcblasComputeType_t
#define cublasContext mcblasContext
#define cublasHandle_t mcblasHandle_t
#define cublasLogCallback mcblasLogCallback

// api redefine
#define cublasCreate_v2 mcblasCreate
#define cublasDestroy_v2 mcblasDestroy
#define cublasGetVersion_v2 mcblasGetVersion
#define cublasGetProperty mcblasGetProperty
#define cublasSetWorkspace_v2 mcblasSetWorkspace
#define cublasSetStream_v2 mcblasSetStream
#define cublasGetStream_v2 mcblasGetStream
#define cublasGetPointerMode_v2 mcblasGetPointerMode
#define cublasSetPointerMode_v2 mcblasSetPointerMode
#define cublasGetAtomicsMode mcblasGetAtomicsMode
#define cublasSetAtomicsMode mcblasSetAtomicsMode
#define cublasGetMathMode mcblasGetMathMode
#define cublasSetMathMode mcblasSetMathMode
#define cublasGetSmCountTarget mcblasGetSmCountTarget
#define cublasSetSmCountTarget mcblasSetSmCountTarget
#define cublasLoggerConfigure mcblasLoggerConfigure
#define cublasSetLoggerCallback mcblasSetLoggerCallback
#define cublasGetLoggerCallback mcblasGetLoggerCallback
#define cublasSetVector mcblasSetVector
#define cublasGetVector mcblasGetVector
#define cublasSetMatrix mcblasSetMatrix
#define cublasGetMatrix mcblasGetMatrix
#define cublasSetVectorAsync mcblasSetVectorAsync
#define cublasGetVectorAsync mcblasGetVectorAsync
#define cublasSetMatrixAsync mcblasSetMatrixAsync
#define cublasGetMatrixAsync mcblasGetMatrixAsync
#define cublasNrm2Ex mcblasNrm2Ex
#define cublasSnrm2_v2 mcblasSnrm2
#define cublasDnrm2_v2 mcblasDnrm2
#define cublasScnrm2_v2 mcblasScnrm2
#define cublasDznrm2_v2 mcblasDznrm2
#define cublasDotEx mcblasDotEx
#define cublasDotcEx mcblasDotcEx
#define cublasSdot_v2 mcblasSdot
#define cublasDdot_v2 mcblasDdot
#define cublasCdotu_v2 mcblasCdotu
#define cublasCdotc_v2 mcblasCdotc
#define cublasZdotu_v2 mcblasZdotu
#define cublasZdotc_v2 mcblasZdotc
#define cublasScalEx mcblasScalEx
#define cublasSscal_v2 mcblasSscal
#define cublasDscal_v2 mcblasDscal
#define cublasCscal_v2 mcblasCscal
#define cublasCsscal_v2 mcblasCsscal
#define cublasZscal_v2 mcblasZscal
#define cublasZdscal_v2 mcblasZdscal
#define cublasAxpyEx mcblasAxpyEx
#define cublasSaxpy_v2 mcblasSaxpy
#define cublasDaxpy_v2 mcblasDaxpy
#define cublasCaxpy_v2 mcblasCaxpy
#define cublasZaxpy_v2 mcblasZaxpy
#define cublasCopyEx mcblasCopyEx
#define cublasScopy_v2 mcblasScopy
#define cublasDcopy_v2 mcblasDcopy
#define cublasCcopy_v2 mcblasCcopy
#define cublasZcopy_v2 mcblasZcopy
#define cublasSswap_v2 mcblasSswap
#define cublasDswap_v2 mcblasDswap
#define cublasCswap_v2 mcblasCswap
#define cublasZswap_v2 mcblasZswap
#define cublasSwapEx mcblasSwapEx
#define cublasIsamax_v2 mcblasIsamax
#define cublasIdamax_v2 mcblasIdamax
#define cublasIcamax_v2 mcblasIcamax
#define cublasIzamax_v2 mcblasIzamax
#define cublasIamaxEx mcblasIamaxEx
#define cublasIsamin_v2 mcblasIsamin
#define cublasIdamin_v2 mcblasIdamin
#define cublasIcamin_v2 mcblasIcamin
#define cublasIzamin_v2 mcblasIzamin
#define cublasIaminEx mcblasIaminEx
#define cublasAsumEx mcblasAsumEx
#define cublasSasum_v2 mcblasSasum
#define cublasDasum_v2 mcblasDasum
#define cublasScasum_v2 mcblasScasum
#define cublasDzasum_v2 mcblasDzasum
#define cublasSrot_v2 mcblasSrot
#define cublasDrot_v2 mcblasDrot
#define cublasCrot_v2 mcblasCrot
#define cublasCsrot_v2 mcblasCsrot
#define cublasZrot_v2 mcblasZrot
#define cublasZdrot_v2 mcblasZdrot
#define cublasRotEx mcblasRotEx
#define cublasSrotg_v2 mcblasSrotg
#define cublasDrotg_v2 mcblasDrotg
#define cublasCrotg_v2 mcblasCrotg
#define cublasZrotg_v2 mcblasZrotg
#define cublasRotgEx mcblasRotgEx
#define cublasSrotm_v2 mcblasSrotm
#define cublasDrotm_v2 mcblasDrotm
#define cublasRotmEx mcblasRotmEx
#define cublasSrotmg_v2 mcblasSrotmg
#define cublasDrotmg_v2 mcblasDrotmg
#define cublasRotmgEx mcblasRotmgEx
#define cublasSgemv_v2 mcblasSgemv
#define cublasDgemv_v2 mcblasDgemv
#define cublasCgemv_v2 mcblasCgemv
#define cublasZgemv_v2 mcblasZgemv
#define cublasSgbmv_v2 mcblasSgbmv
#define cublasDgbmv_v2 mcblasDgbmv
#define cublasCgbmv_v2 mcblasCgbmv
#define cublasZgbmv_v2 mcblasZgbmv
#define cublasStrmv_v2 mcblasStrmv
#define cublasDtrmv_v2 mcblasDtrmv
#define cublasCtrmv_v2 mcblasCtrmv
#define cublasZtrmv_v2 mcblasZtrmv
#define cublasStbmv_v2 mcblasStbmv
#define cublasDtbmv_v2 mcblasDtbmv
#define cublasCtbmv_v2 mcblasCtbmv
#define cublasZtbmv_v2 mcblasZtbmv
#define cublasStpmv_v2 mcblasStpmv
#define cublasDtpmv_v2 mcblasDtpmv
#define cublasCtpmv_v2 mcblasCtpmv
#define cublasZtpmv_v2 mcblasZtpmv
#define cublasStrsv_v2 mcblasStrsv
#define cublasDtrsv_v2 mcblasDtrsv
#define cublasCtrsv_v2 mcblasCtrsv
#define cublasZtrsv_v2 mcblasZtrsv
#define cublasStpsv_v2 mcblasStpsv
#define cublasDtpsv_v2 mcblasDtpsv
#define cublasCtpsv_v2 mcblasCtpsv
#define cublasZtpsv_v2 mcblasZtpsv
#define cublasStbsv_v2 mcblasStbsv
#define cublasDtbsv_v2 mcblasDtbsv
#define cublasCtbsv_v2 mcblasCtbsv
#define cublasZtbsv_v2 mcblasZtbsv
#define cublasSsymv_v2 mcblasSsymv
#define cublasDsymv_v2 mcblasDsymv
#define cublasCsymv_v2 mcblasCsymv
#define cublasZsymv_v2 mcblasZsymv
#define cublasChemv_v2 mcblasChemv
#define cublasZhemv_v2 mcblasZhemv
#define cublasSsbmv_v2 mcblasSsbmv
#define cublasDsbmv_v2 mcblasDsbmv
#define cublasChbmv_v2 mcblasChbmv
#define cublasZhbmv_v2 mcblasZhbmv
#define cublasSspmv_v2 mcblasSspmv
#define cublasDspmv_v2 mcblasDspmv
#define cublasChpmv_v2 mcblasChpmv
#define cublasZhpmv_v2 mcblasZhpmv
#define cublasSger_v2 mcblasSger
#define cublasDger_v2 mcblasDger
#define cublasCgeru_v2 mcblasCgeru
#define cublasCgerc_v2 mcblasCgerc
#define cublasZgeru_v2 mcblasZgeru
#define cublasZgerc_v2 mcblasZgerc
#define cublasSsyr_v2 mcblasSsyr
#define cublasDsyr_v2 mcblasDsyr
#define cublasCsyr_v2 mcblasCsyr
#define cublasZsyr_v2 mcblasZsyr
#define cublasCher_v2 mcblasCher
#define cublasZher_v2 mcblasZher
#define cublasSspr_v2 mcblasSspr
#define cublasDspr_v2 mcblasDspr
#define cublasChpr_v2 mcblasChpr
#define cublasZhpr_v2 mcblasZhpr
#define cublasSsyr2_v2 mcblasSsyr2
#define cublasDsyr2_v2 mcblasDsyr2
#define cublasCsyr2_v2 mcblasCsyr2
#define cublasZsyr2_v2 mcblasZsyr2
#define cublasCher2_v2 mcblasCher2
#define cublasZher2_v2 mcblasZher2
#define cublasSspr2_v2 mcblasSspr2
#define cublasDspr2_v2 mcblasDspr2
#define cublasChpr2_v2 mcblasChpr2
#define cublasZhpr2_v2 mcblasZhpr2
#define cublasSgemvBatched mcblasSgemvBatched
#define cublasDgemvBatched mcblasDgemvBatched
#define cublasCgemvBatched mcblasCgemvBatched
#define cublasZgemvBatched mcblasZgemvBatched
#define cublasHSHgemvBatched mcblasHSHgemvBatched
#define cublasHSSgemvBatched mcblasHSSgemvBatched
#define cublasTSTgemvBatched mcblasTSTgemvBatched
#define cublasTSSgemvBatched mcblasTSSgemvBatched
#define cublasSgemvStridedBatched mcblasSgemvStridedBatched
#define cublasDgemvStridedBatched mcblasDgemvStridedBatched
#define cublasCgemvStridedBatched mcblasCgemvStridedBatched
#define cublasZgemvStridedBatched mcblasZgemvStridedBatched
#define cublasHSHgemvStridedBatched mcblasHSHgemvStridedBatched
#define cublasHSSgemvStridedBatched mcblasHSSgemvStridedBatched
#define cublasTSTgemvStridedBatched mcblasTSTgemvStridedBatched
#define cublasTSSgemvStridedBatched mcblasTSSgemvStridedBatched
#define cublasSgemm_v2 mcblasSgemm
#define cublasDgemm_v2 mcblasDgemm
#define cublasCgemm_v2 mcblasCgemm
#define cublasCgemm3m mcblasCgemm3m
#define cublasCgemm3mEx mcblasCgemm3mEx
#define cublasZgemm_v2 mcblasZgemm
#define cublasZgemm3m mcblasZgemm3m
#define cublasHgemm mcblasHgemm
#define cublasSgemmEx mcblasSgemmEx
#define cublasGemmEx mcblasGemmEx
#define cublasCgemmEx mcblasCgemmEx
#define cublasSsyrk_v2 mcblasSsyrk
#define cublasDsyrk_v2 mcblasDsyrk
#define cublasCsyrk_v2 mcblasCsyrk
#define cublasZsyrk_v2 mcblasZsyrk
#define cublasCsyrkEx mcblasCsyrkEx
#define cublasCsyrk3mEx mcblasCsyrk3mEx
#define cublasCherk_v2 mcblasCherk
#define cublasZherk_v2 mcblasZherk
#define cublasCherkEx mcblasCherkEx
#define cublasCherk3mEx mcblasCherk3mEx
#define cublasSsyr2k_v2 mcblasSsyr2k
#define cublasDsyr2k_v2 mcblasDsyr2k
#define cublasCsyr2k_v2 mcblasCsyr2k
#define cublasZsyr2k_v2 mcblasZsyr2k
#define cublasCher2k_v2 mcblasCher2k
#define cublasZher2k_v2 mcblasZher2k
#define cublasSsyrkx mcblasSsyrkx
#define cublasDsyrkx mcblasDsyrkx
#define cublasCsyrkx mcblasCsyrkx
#define cublasZsyrkx mcblasZsyrkx
#define cublasCherkx mcblasCherkx
#define cublasZherkx mcblasZherkx
#define cublasSsymm_v2 mcblasSsymm
#define cublasDsymm_v2 mcblasDsymm
#define cublasCsymm_v2 mcblasCsymm
#define cublasZsymm_v2 mcblasZsymm
#define cublasChemm_v2 mcblasChemm
#define cublasZhemm_v2 mcblasZhemm
#define cublasStrsm_v2 mcblasStrsm
#define cublasDtrsm_v2 mcblasDtrsm
#define cublasCtrsm_v2 mcblasCtrsm
#define cublasZtrsm_v2 mcblasZtrsm
#define cublasStrmm_v2 mcblasStrmm
#define cublasDtrmm_v2 mcblasDtrmm
#define cublasCtrmm_v2 mcblasCtrmm
#define cublasZtrmm_v2 mcblasZtrmm
#define cublasHgemmBatched mcblasHgemmBatched
#define cublasSgemmBatched mcblasSgemmBatched
#define cublasDgemmBatched mcblasDgemmBatched
#define cublasCgemmBatched mcblasCgemmBatched
#define cublasCgemm3mBatched mcblasCgemm3mBatched
#define cublasZgemmBatched mcblasZgemmBatched
#define cublasHgemmStridedBatched mcblasHgemmStridedBatched
#define cublasSgemmStridedBatched mcblasSgemmStridedBatched
#define cublasDgemmStridedBatched mcblasDgemmStridedBatched
#define cublasCgemmStridedBatched mcblasCgemmStridedBatched
#define cublasCgemm3mStridedBatched mcblasCgemm3mStridedBatched
#define cublasZgemmStridedBatched mcblasZgemmStridedBatched
#define cublasGemmBatchedEx mcblasGemmBatchedEx
#define cublasGemmStridedBatchedEx mcblasGemmStridedBatchedEx
#define cublasSgeam mcblasSgeam
#define cublasDgeam mcblasDgeam
#define cublasCgeam mcblasCgeam
#define cublasZgeam mcblasZgeam
#define cublasStrsmBatched mcblasStrsmBatched
#define cublasDtrsmBatched mcblasDtrsmBatched
#define cublasCtrsmBatched mcblasCtrsmBatched
#define cublasZtrsmBatched mcblasZtrsmBatched
#define cublasSdgmm mcblasSdgmm
#define cublasDdgmm mcblasDdgmm
#define cublasCdgmm mcblasCdgmm
#define cublasZdgmm mcblasZdgmm
#define cublasSmatinvBatched mcblasSmatinvBatched
#define cublasDmatinvBatched mcblasDmatinvBatched
#define cublasCmatinvBatched mcblasCmatinvBatched
#define cublasZmatinvBatched mcblasZmatinvBatched
#define cublasSgeqrfBatched mcblasSgeqrfBatched
#define cublasDgeqrfBatched mcblasDgeqrfBatched
#define cublasCgeqrfBatched mcblasCgeqrfBatched
#define cublasZgeqrfBatched mcblasZgeqrfBatched
#define cublasSgelsBatched mcblasSgelsBatched
#define cublasDgelsBatched mcblasDgelsBatched
#define cublasCgelsBatched mcblasCgelsBatched
#define cublasZgelsBatched mcblasZgelsBatched
#define cublasStpttr mcblasStpttr
#define cublasDtpttr mcblasDtpttr
#define cublasCtpttr mcblasCtpttr
#define cublasZtpttr mcblasZtpttr
#define cublasStrttp mcblasStrttp
#define cublasDtrttp mcblasDtrttp
#define cublasCtrttp mcblasCtrttp
#define cublasZtrttp mcblasZtrttp
#define cublasSgetrfBatched mcblasSgetrfBatched
#define cublasDgetrfBatched mcblasDgetrfBatched
#define cublasCgetrfBatched mcblasCgetrfBatched
#define cublasZgetrfBatched mcblasZgetrfBatched
#define cublasSgetriBatched mcblasSgetriBatched
#define cublasDgetriBatched mcblasDgetriBatched
#define cublasCgetriBatched mcblasCgetriBatched
#define cublasZgetriBatched mcblasZgetriBatched
#define cublasSgetrsBatched mcblasSgetrsBatched
#define cublasDgetrsBatched mcblasDgetrsBatched
#define cublasCgetrsBatched mcblasCgetrsBatched
#define cublasZgetrsBatched mcblasZgetrsBatched
#define cublasUint8gemmBias mcblasUint8gemmBias
#define cublasMigrateComputeType mcblasMigrateComputeType
#define cublasGetStatusString mcblasGetStatusString

// other redefine
#define cublasDataType_t macaDataType_t
